home *** CD-ROM | disk | FTP | other *** search
- #
- # library.make
- #
- # Variable definitions and rules for building library projects. An
- # application is a directory which contains an executable and any resources
- # that executable requires. See wrapped.make for more information about
- # projects whose product is a directory.
- #
- # PUBLIC TARGETS
- # library: synonymous with all
- #
- # IMPORTED VARIABLES
- # PUBLIC_HEADER_DIR: Determines where public exported header files
- # should be installed. Do not include $(DSTROOT) in this value --
- # it is prefixed automatically.
- # PRIVATE_HEADER_DIR: Determines where private exported header files
- # should be installed. Do not include $(DSTROOT) in this value --
- # it is prefixed automatically.
- # LIBRARY_STYLE: This may be either STATIC or DYNAMIC, and determines
- # whether the libraries produces are statically linked when they
- # are used or if they are dynamically loadable.
- # LIBRARY_DLL_INSTALLDIR: On Windows platforms, this variable indicates
- # where to put the library's DLL. This variable defaults to
- # $(INSTALLDIR)/../Executables
- #
- # OVERRIDABLE VARIABLES
- # INSTALL_NAME_DIRECTIVE: This directive ensures that executables linked
- # against the shlib will run against the correct version even if
- # the current version of the shlib changes. You may override this
- # to "" as an alternative to using the DYLD_LIBRARY_PATH during your
- # development cycle, but be sure to restore it before installing.
- #
- # EXPORTED VARIABLES
- # none
- #
-
- .PHONY: library all
- library: all
- PROJTYPE = LIBRARY
-
- PRODUCT = $(PRODUCT_DIR)/$(LIBRARY_PREFIX)$(NAME)$(LIBRARY_EXT)
- PRODUCTS = $(PRODUCT)
- STRIPPED_PRODUCTS = $(PRODUCT)
-
- ifndef LIBRARY_DLL_INSTALLDIR
- LIBRARY_DLL_INSTALLDIR = $(INSTALLDIR)/../Executables
- endif
-
- DYLIB_INSTALL_DIR = $(INSTALLDIR)
- DYLIB_INSTALL_NAME = $(LIBRARY_PREFIX)$(NAME)$(LIBRARY_EXT)
- INSTALL_NAME_DIRECTIVE = -install_name $(DYLIB_INSTALL_DIR)/$(DYLIB_INSTALL_NAME)
-
- ifneq "STATIC" "$(LIBRARY_STYLE)"
- PROJTYPE_LDFLAGS = -dynamic -compatibility_version $(COMPATIBILITY_PROJECT_VERSION) -current_version $(CURRENT_PROJECT_VERSION) $(INSTALL_NAME_DIRECTIVE)
- else
- PROJTYPE_LDFLAGS = -static
- endif
-
- BEFORE_INSTALL += verify-install-name-directive
-
- ifeq "WINDOWS" "$(OS)"
- ifneq "STATIC" "$(LIBRARY_STYLE)"
-
- AFTER_INSTALL += install-dll
- OS_LDFLAGS += -def $(WINDOWS_DEF_FILE)
-
- endif
- endif
-
- include $(MAKEFILEDIR)/common.make
- -include $(LOCAL_MAKEFILEDIR)/library.make.preamble
-
- ifeq "STATIC" "$(LIBRARY_STYLE)"
-
- $(PRODUCT): $(DEPENDENCIES)
- ifeq "$(USE_AR)" "YES"
- $(AR) ru $(PRODUCT) $(LOADABLES)
- $(RANLIB) $(PRODUCT)
- else
- $(LIBTOOL) $(ALL_LIBTOOL_FLAGS) -o $(PRODUCT) $(LOADABLES)
- endif
-
- else
-
- $(PRODUCT): $(DEPENDENCIES) $(WINDOWS_DEF_FILE)
- $(LIBTOOL) $(filter-out -g, $(ALL_LDFLAGS)) -o $(PRODUCT) $(LOADABLES)
- endif
-
- verify-install-name-directive:
- ifeq "" "$(INSTALL_NAME_DIRECTIVE)"
- $(SILENT) $(ECHO) You must restore the INSTALL_NAME_DIRECTIVE variable
- $(SILENT) $(ECHO) before installing a framework.
- $(SILENT) exit 1
- endif
-
- install-dll: $(DSTROOT)$(LIBRARY_DLL_INSTALLDIR)
- $(RM) -f $(DSTROOT)$(LIBRARY_DLL_INSTALLDIR)/$(NAME)$(DLL_EXT)
- $(MV) $(DSTROOT)$(INSTALLDIR)/$(NAME)$(DLL_EXT) $(DSTROOT)$(LIBRARY_DLL_INSTALLDIR)
-
- #
- # creating directories
- #
-
- $(DSTROOT)$(LIBRARY_DLL_INSTALLDIR):
- $(MKDIRS) $@
-
- -include $(LOCAL_MAKEFILEDIR)/library.make.postamble
-